from win32com import client
import pythoncom
import os

def check_doc(filename):
    # 初始化 WPS
    wps = client.Dispatch("KWps.Application")
    wps.Visible = False
    
    try:
        # 获取完整路径
        abs_path = os.path.abspath(filename)
        print(f"打开文件: {abs_path}")
        
        # 打开文档
        doc = wps.Documents.Open(abs_path)
        
        try:
            # 切换到页面布局视图
            doc.ActiveWindow.View.Type = 3  # 3 代表页面布局视图
            
            # 打印文档信息
            print(f"\n文档: {filename}")
            print(f"段落数: {doc.Paragraphs.Count}")
            print(f"内联图片数: {doc.InlineShapes.Count}")
            print(f"浮动图片数: {doc.Shapes.Count}")
            print(f"表格数: {doc.Tables.Count}")
            
            # 打印第一页表格信息
            print("\n=== 第一页表格 ===")
            for i in range(1, doc.Tables.Count + 1):
                table = doc.Tables(i)
                table.Select()
                if wps.Selection.Information(3) == 1:  # 检查是否在第一页
                    print(f"\n表格 {i}:")
                    # 获取表格的位置信息
                    selection = wps.Selection
                    print(f"  水平位置: {selection.Information(6)}")  # 6 代表水平位置
                    print(f"  垂直位置: {selection.Information(7)}")  # 7 代表垂直位置
                    print(f"  行数: {table.Rows.Count}")
                    print(f"  列数: {table.Columns.Count}")
            
            # 打印浮动图片信息
            print("\n=== 浮动图片 ===")
            for i in range(1, doc.Shapes.Count + 1):
                shape = doc.Shapes(i)
                shape.Select()
                
                # 只打印第一页的图片信息
                if wps.Selection.Information(3) == 1:
                    print(f"\n浮动图片 {i}:")
                    print(f"  类型: {shape.Type}")
                    print(f"  宽度: {shape.Width}")
                    print(f"  高度: {shape.Height}")
                    print(f"  左边距: {shape.Left}")
                    print(f"  上边距: {shape.Top}")
                    print(f"  Z序: {shape.ZOrderPosition}")
                    
                    # 检查是否可以访问图片数据
                    try:
                        if hasattr(shape, 'PictureFormat'):
                            print("  图片格式可用")
                            if hasattr(shape.PictureFormat, 'Brightness'):
                                print(f"  亮度: {shape.PictureFormat.Brightness}")
                            if hasattr(shape.PictureFormat, 'Contrast'):
                                print(f"  对比度: {shape.PictureFormat.Contrast}")
                    except:
                        print("  无法访问图片格式")
            
            # 打印内联图片信息
            print("\n=== 内联图片 ===")
            for i in range(1, doc.InlineShapes.Count + 1):
                shape = doc.InlineShapes(i)
                shape.Select()
                
                # 只打印第一页的图片信息
                if wps.Selection.Information(3) == 1:
                    print(f"\n内联图片 {i}:")
                    print(f"  类型: {shape.Type}")
                    print(f"  宽度: {shape.Width}")
                    print(f"  高度: {shape.Height}")
                    print(f"  位置: {wps.Selection.Information(6)}")
                    print(f"  与页面顶部的距离: {wps.Selection.Information(7)}")
            
        finally:
            # 关闭文档
            doc.Close()
            
    finally:
        # 退出 WPS
        wps.Quit()

if __name__ == '__main__':
    # 初始化 COM
    pythoncom.CoInitialize()
    try:
        # 检查第一个文档
        check_doc('01.docx')
    finally:
        pythoncom.CoUninitialize() 